#!/usr/local/bin/node

//////////////////////////////////////////////////////
// this script requires node-websocket-server library.
// refs. https://github.com/miksago/node-websocket-server
//
// Thid code assumed that those libraries are installed at
// ~/.node_libraries
//////////////////////////////////////////////////////

// ライブラリの読み込み
var sys = require("sys")
  , http = require("http")
  , fs = require("fs")
  , path = require("path")
  , ws = require('node-websocket-server/lib/ws/server');

// 変数宣言
var wsserver, // WebSocketサーバー
  httpServer; // HTTPサーバー

// HTTPサーバーインスタンスの生成
httpServer = http.createServer(function(req, res){
  var params = require('url').parse(req.url, true).query;
  //sys.log(JSON.stringify(params.delay));
  res.writeHead(200, {
    'Content-Type':'application/json',
    'Access-Control-Allow-Origin':'*',
    'Connection':'close'});
  //res.end(JSON.stringify(params));
  setTimeout(function(){
    res.end(JSON.stringify(params));
  }, parseInt(params.delay));
});

// WebSocketサーバーインスタンスの生成
wsserver = ws.createServer({
  server: httpServer
});

// "listening"時のevent handler
wsserver.addListener("listening", function(){
//  sys.log("Listening for connections.");
});

// ユーザー接続時のイベントハンドラ
wsserver.addListener("connection", function(conn){
//  sys.log("Connection created :"+conn.id);
  // メッセージ受信時のハンドラ
  // エコーバックする
  conn.addListener("message", function(message){
    // server.broadcastは自分も含めてブロードキャスト
    setTimeout(function(){
      conn.send(message);
    }, parseInt(JSON.parse(message)[2]));
  });
});

// 切断時のイベントハンドラ
wsserver.addListener("close", function(conn){
//  sys.log("Connection terminated :"+conn.id);
});

// port=8002の指定
wsserver.listen(8002);
